home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 38 / Amiga Format CD38 (1999-03-15)(Future Publishing)(GB)(Track 1 of 3)[!][issue 1999-04].iso / -seriously_amiga- / programming / other / cyberxxxsrc / misc / execlistsupport.mod < prev    next >
Text File  |  1999-02-08  |  3KB  |  102 lines

  1. MODULE  ExecListSupport;
  2.  
  3. (* /// ------------------------------- "IMPORT" -------------------------------- *)
  4. IMPORT  e:=Exec,
  5.         es:=ExecSupport;
  6. (* \\\ ------------------------------------------------------------------------- *)
  7.  
  8. (* /// -------------------------------- "TYPE" --------------------------------- *)
  9. TYPE    Stack * =e.MinList;
  10.         Queue * =e.MinList;
  11.  
  12.         FlushFunc * =PROCEDURE (n: e.CommonNodePtr);
  13. (* \\\ ------------------------------------------------------------------------- *)
  14.  
  15. (* /// ------------------------- "PROCEDURE Enqueue()" ------------------------- *)
  16. PROCEDURE Enqueue * (VAR q: Queue;
  17.                      n: e.CommonNodePtr);
  18. BEGIN
  19.   e.AddTail(q,n);
  20. END Enqueue;
  21. (* \\\ ------------------------------------------------------------------------- *)
  22.  
  23. (* /// ------------------------- "PROCEDURE Dequeue()" ------------------------- *)
  24. PROCEDURE Dequeue * (VAR q: Queue): e.CommonNodePtr;
  25. BEGIN
  26.   IF ~es.ListEmpty(q) THEN
  27.     RETURN e.RemHead(q);
  28.   ELSE
  29.     RETURN NIL;
  30.   END;
  31. END Dequeue;
  32. (* \\\ ------------------------------------------------------------------------- *)
  33.  
  34. (* /// -------------------------- "PROCEDURE First()" -------------------------- *)
  35. PROCEDURE First * (VAR q: Queue): e.CommonNodePtr;
  36. BEGIN
  37.   IF ~es.ListEmpty(q) THEN
  38.     RETURN q.head;
  39.   ELSE
  40.     RETURN NIL;
  41.   END;
  42. END First;
  43. (* \\\ ------------------------------------------------------------------------- *)
  44.  
  45. (* /// -------------------------- "PROCEDURE Last()" --------------------------- *)
  46. PROCEDURE Last * (VAR q: Queue): e.CommonNodePtr;
  47. BEGIN
  48.   IF ~es.ListEmpty(q) THEN
  49.     RETURN q.tailPred;
  50.   ELSE
  51.     RETURN NIL;
  52.   END;
  53. END Last;
  54. (* \\\ ------------------------------------------------------------------------- *)
  55.  
  56. (* /// -------------------------- "PROCEDURE Push()" --------------------------- *)
  57. PROCEDURE Push * (VAR s: Stack;
  58.                   n: e.CommonNodePtr);
  59. BEGIN
  60.   e.AddHead(s,n);
  61. END Push;
  62. (* \\\ ------------------------------------------------------------------------- *)
  63.  
  64. (* /// --------------------------- "PROCEDURE Pop()" --------------------------- *)
  65. PROCEDURE Pop * (VAR s: Stack): e.CommonNodePtr;
  66. BEGIN
  67.   IF ~es.ListEmpty(s) THEN
  68.     RETURN e.RemHead(s);
  69.   ELSE
  70.     RETURN NIL;
  71.   END;
  72. END Pop;
  73. (* \\\ ------------------------------------------------------------------------- *)
  74.  
  75. (* /// --------------------------- "PROCEDURE Top()" --------------------------- *)
  76. PROCEDURE Top * (VAR s: Stack): e.CommonNodePtr;
  77. BEGIN
  78.   IF ~es.ListEmpty(s) THEN
  79.     RETURN s.head;
  80.   ELSE
  81.     RETURN NIL;
  82.   END;
  83. END Top;
  84. (* \\\ ------------------------------------------------------------------------- *)
  85.  
  86. (* /// -------------------------- "PROCEDURE Flush()" -------------------------- *)
  87. PROCEDURE Flush * (VAR q: Queue;
  88.                    flushFunc: FlushFunc);
  89.  
  90. VAR     n: e.CommonNodePtr;
  91.  
  92. BEGIN
  93.   WHILE ~es.ListEmpty(q) DO
  94.     n:=e.RemHead(q);
  95.     flushFunc(n);
  96.   END;
  97. END Flush;
  98. (* \\\ ------------------------------------------------------------------------- *)
  99.  
  100. END ExecListSupport.
  101.  
  102.